package com.huike.report.service;

import com.huike.clues.domain.TbActivity;
import com.huike.clues.domain.TbClue;
import com.huike.clues.domain.vo.IndexStatisticsVo;
import com.huike.contract.domain.TbContract;
import com.huike.report.domain.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface IReportService {


    /**
     * 客户统计报表
     * @param tbContract
     * @return
     */
    public  List<TbContract> contractReportList(TbContract tbContract);



    /**
     * 销售统计部门报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    public List<Map<String, Object>> deptStatisticsList(String beginCreateTime, String endCreateTime);

    /**
     * 销售统计渠道报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    public List<Map<String, Object>> channelStatisticsList(String beginCreateTime, String endCreateTime);
    /**
     * 销售统计归属人报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    public List<Map<String, Object>> ownerShipStatisticsList(String beginCreateTime, String endCreateTime);



    /**
     * 渠道统计
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    public List<Map<String, Object>> chanelStatistics(String beginCreateTime, String endCreateTime);


    /**
     * 活动统计
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    public List<Map<String, Object>> activityStatistics(String beginCreateTime, String endCreateTime);



    public List<TbClue> cluesStatisticsList(TbClue clue);

    /**
     * 活动渠道统计
     * @param activity
     * @return
     */
    public List<ActivityStatisticsVo> activityStatisticsList(TbActivity activity);



    public IndexVo getIndex(IndexStatisticsVo request);


    /**
     * 首页基本数据展示
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    IndexBaseInfoVO getBaseInfo(String beginCreateTime, String endCreateTime);

    /**
     * 首页近日简报
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    IndexTodayInfoVO getTodayInfo(String beginCreateTime, String endCreateTime);

    /**
     * 首页待跟进数据展示
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    IndexTodoInfoVO getTodoInfo(String beginCreateTime, String endCreateTime);


    List<SubjectStatisticsVo> getSubjectStatistics(String beginCreateTime, String endCreateTime);


    /**
     * 有效线索数
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    VulnerabilityMapVo getVulnerabilityMap(@Param("startTime") String beginCreateTime,
                                           @Param("endTime") String endCreateTime);


    /**
     * 商机转化数量
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<BusinessChangeStatisticsVo> getbusinessChangeStatistics(@Param("beginCreateTime") String beginCreateTime,
                                                                 @Param("endCreateTime") String endCreateTime);
    /**
     * 线索转化商机数量
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<SalesStatisticVo> getSalesStatistic(@Param("beginCreateTime") String beginCreateTime,
                                             @Param("endCreateTime") String endCreateTime);
    /**
     * 获取每天新增的线索数量
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
   LineChartVo1 getClueNumAndDate(@Param("beginCreateTime") String beginCreateTime,
                                               @Param("endCreateTime") String endCreateTime);

}
